package Utilidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadArchivos implements Serializable {
    
    private List<FileItem> listaComponentes = new ArrayList();
    private List<FileItem> listaArchivos = new ArrayList();

    public UploadArchivos() {}

    public UploadArchivos(HttpServletRequest request) throws Exception{
    
        try{
        
            //Fabrica de FileItems
            FileItemFactory f = new DiskFileItemFactory();

            //Conversion de componentes a FileItem
            ServletFileUpload upload = new ServletFileUpload(f);

            //Lista de componentes de la pagina
            List items = upload.parseRequest(request);
            
            for(int i = 0; i < items.size(); i++){
                
                //Item es componente de la pagina
                FileItem item = (FileItem) items.get(i);
                
                //item.isFormField() false = input file; true = text field
                if (!item.isFormField()){
                                        
                    //Archivo que se hostea en el servidor
                    listaArchivos.add(item);

                }
                
                else{
                
                    listaComponentes.add(item);
                    
                }
                           
            }    
            
        }
        
        catch(Exception e){
        
            throw e;
        
        }
                   
    }
            
    public List<FileItem> getComponentes(){ return listaComponentes; }
    public List<FileItem> getArchivos(){ return listaArchivos; }
    public void setComponentes(List<FileItem> listaComponentes) { this.listaComponentes = listaComponentes; }
    public void setArchivos(List<FileItem> listaArchivos) { this.listaArchivos = listaArchivos; }
        
}
